August 24, 2020
해당 값의 용도를 예상하여 검색할 수 있도록 한다.
setInterval(eatKimchi, 86400);
const SECONDS_IN_A_DAY = 86400;
setInterval(eatKimchi, SECONDS_IN_A_DAY);
명사로 함수명을 짓는것 보다 동사로 함수명을 짓게되면, 코드를 짜면서 해당 함수가 너무 많은 기능을 갖는것이 아닌지 확인을 할 수 있다.
기본적으로 함수는 한개의 기능만 잘해야하는것이 중요하기때문!
사전에 정했던 동사로된 함수명과 관련이 먼 기능을 가진 함수라면 분리하는것이 좋다!
// cookie를 찾는것과, userData를 불러오는것을 같이갖고있는 함수
function userData(){
const value = `; ${document.cookie}`;
const parts = value.split(`; user_id=`);
if(parts.length === 2){
const cookie = parts.pop().split(';').shift();
// 이후, cookie를 사용하여 userData를 불러오는 코드들
}
}
const data = userData();
// cookie를 찾는 함수 분리
function getCookie(){
const value = `; ${document.cookie}`;
const parts = value.split(`; user_id=`);
if(parts.length === 2){
return parts.pop().split(';').shift();
}
}
// 가져온 cookie를 활용해 userData를 불러오는 함수 실행
function loadUserData(){
const cookie = getCookie();
// 이후, cookie를 사용하여 userData를 불러오는 코드들
}
const userData = loadUserData();
인수는 최대 3개가 적당하지만, 많은 인수를 보내야 한다면 객체를 사용하는게 좋다.
like arguments, destructuring
function makePayment(price, productId, size, quantity, userId){
// Payment 작성
};
makePayment(35, 5, 'xl', 2, '니꼬');
function makePayment({ price, productId, size, quantity, userId }){
// Payment 작성
}
makePayment({
price : 35,
productId : 5,
size : 'xl',
quantity : 2,
userId : '니꼬',
});
boolean을 함수의 값으로 보낸다는 것은, 해당 함수에 조건문이 있는 경우일 것이다.
그럴 때에는, 해당 조건에 따라 다른 함수를 만들어서 진행하는것이 좋다.
함수는 하나의 기능만 하는것이 좋기 때문!
function sendMessage(text, isPrivate){
if(isPrivate){
// 비밀 메시지
}else{
// 공개 메시지
}
}
sendMessage('hello', false)
sendMessage('this is a secret', true)
function sendPrivateMessage(text){
// 비밀 메시지
}
function sendPublicMessage(text){
// 공개 메시지
}
sendPublicMessage('hello');
sendPrivateMessage('this is a secret');
a, b, c 등 짧은 변수명이나 축약어는 절대사용하면 안된다.
당장 내일이 되면 나도 모를수있다!
allUsers.forEach((u, i) => {
sendEmail(u);
addToCount(i);
});
allUsers.forEach((user, currentNumber) => {
sendEmail(user);
addToCount(currentNumber);
});
우리는 개발을 할 때에 미친?상태이기 때문에 처음부터 이쁘고 깨끗한 코드를 쓰려고하지는 말자.
일단, 원하는 기능이 잘 작동되로고 코드를 작성하고 마지막에 대청소를하는것이 좋다.